package com.aaa.tars.service.impl;

import com.aaa.tars.dao.CpxxDao;
import com.aaa.tars.entity.Cpxx;
import com.aaa.tars.entity.Order;
import com.aaa.tars.service.CpxxService;
import com.aaa.tars.util.CustomException;
import com.aaa.tars.util.Page;
import com.aaa.tars.util.ResultStatus;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @FileName: CpxxServiceImpl
 * @Description: 产品信息服务实现类，提供产品信息的增删改查功能
 * @Author: ghz
 * @CreateTime:2025/9/10 19:11
 * @Version:1.0.0
 */
@Service
public class CpxxServiceImpl implements CpxxService {
    @Resource
    private CpxxDao cpxxDao;

    /**
     * 根据产品ID查询产品信息
     * @param cpxxId 产品ID
     * @return 产品信息对象
     * @throws CustomException 当产品ID为空或小于等于0时抛出异常
     */
    @Override
    public Cpxx queryById(Integer cpxxId) {
        if(cpxxId==null || cpxxId<=0){
            throw new CustomException(ResultStatus.ERROR.getStatusCode(),ResultStatus.ERROR.getStatusMessage());
        }
        return cpxxDao.queryById(cpxxId);
    }

    /**
     * 分页查询产品信息
     * @param page 分页参数对象，包含页码、每页数量和查询条件
     * @return 分页结果信息
     * @throws CustomException 当页码或每页数量为空或小于等于0时抛出异常
     */
    @Override
    public PageInfo queryByPage(Page<Cpxx> page) {
        Integer pageNo = page.getPageNo();
        Integer pageSize = page.getPageSize();
        if (pageNo == null || pageNo <= 0 || pageSize == null || pageSize <= 0) {
            throw new CustomException(ResultStatus.ERROR.getStatusCode(),
                    ResultStatus.ERROR.getStatusMessage());
        }
        // 设置分页参数
        PageHelper.startPage(pageNo, pageSize);
        Cpxx data = page.getData();
        // 执行查询并返回分页结果
        return new PageInfo(cpxxDao.queryByParam(data));
    }

    /**
     * 新增产品信息
     * @param cpxx 产品信息对象
     * @return 受影响的行数
     */
    @Override
    public int insert(Cpxx cpxx) {
        return cpxxDao.insert(cpxx);
    }

    /**
     * 更新产品信息
     * @param cpxx 产品信息对象
     * @return 受影响的行数
     */
    @Override
    public int update(Cpxx cpxx) {
        return cpxxDao.update(cpxx);
    }

    /**
     * 根据产品ID删除产品信息
     * @param cpxxId 产品ID
     * @return 受影响的行数
     */
    @Override
    public int deleteById(Integer cpxxId) {
        return cpxxDao.deleteById(cpxxId);
    }
}